import { createRouter, createWebHistory } from 'vue-router'
import { routes } from 'vue-router/auto-routes'
import { setupLayouts } from 'virtual:generated-layouts'
import { menuConfig, type MenuItem } from '@/menuConfig'
const router = createRouter({

  history: createWebHistory(),
  routes: setupLayouts(routes)
})
console.log(routes)



// 在全局路由守卫中处理 `page` 参数
router.beforeEach((to, from, next) => {
  // 判断目标路由 `to` 是否在 menuConfig 中有对应的菜单项
  const toRouteInMenu = findMenuItemByPath(menuConfig, to.path)

  // 如果目标路由不在 menuConfig 中，尝试为目标路由添加 `page` 参数
  if (!toRouteInMenu) {
    if (to.query.page) {
      return next()  // 已经包含 `page` 参数，直接跳转
    }
    console.log(from, 'from')
    const fromPage = from.fullPath   // 获取来自 `from` 路由的 `page` 或最后一部分路径作为 `page`

    // 如果 `from` 有 `page` 参数或者路径最后部分有意义的值，就添加到 `to` 的 `query`
    if (fromPage) {
      next({ path: to.path, query: { ...to.query, page: fromPage } })
    } else {
      next()  // 如果没有 `page` 参数，则正常跳转
    }
  } else {
    next()  // 如果目标路由存在于 menuConfig 中，正常跳转
  }
})

// 根据路径查找菜单项
function findMenuItemByPath(menuList: MenuItem[], path: string): MenuItem | null {
  for (const item of menuList) {
    if (item.key === path) return item
    if (item.children) {
      const found = findMenuItemByPath(item.children, path)
      if (found) return found
    }
  }
  return null  // 如果没有找到匹配的菜单项
}

export default router